Site redirection

ABSTRACT

A site redirection system and corresponding methods for redirecting a user from a requested site to a target site is provided. When a user navigates to a site on which the redirection system is implemented, the site downloads onto the user&#39;s machine client-side redirection logic. The client-side redirection logic collects the machine&#39;s configuration information and passes the collected configuration information to the site. On the site, server-side redirection logic uses the received configuration information to determine a target URL based on the configuration information passed by the client-side redirection logic. The server-side redirection logic then passes the target URL to the client-side redirection logic where the final redirection occurs.

BACKGROUND

The proliferation of computers and the maturing of the Internet and the World Wide Web (“web”) have resulted in the web increasingly becoming a medium used to deliver software, such as application programs and operating system programs, and updates to the software to consumers. Indeed, many software providers are delivering their software, including updates to the software, to their consumers over the web.

Software providers typically release different versions of software via versions of corresponding software packages. The software and any future updates to the software are provided via a web site, and the software typically includes “hard-coded” entry points (e.g., hard-coded URLs) which allow users of the software to connect to the web site in order to become aware of and receive updates to the software. For example, MICROSOFT provides a WINDOWS Update site that provides updates for a particular version or versions of the WINDOWS operating system software and WINDOWS-based hardware. Each version of the WINDOWS operating system provides an entry point, such as a WINDOWS Update shortcut in a “Start” menu, into its appropriate WINDOWS Update site. To receive updates, a user can access the site addressed by the entry point (e.g., clicking on the “WINDOWS Update” icon that is provided on the “Start” menu). This navigates the user to a site that is appropriate for the version of the software (e.g., operating system) that is currently installed on the user's computer system. When the user is at the site, the site scans the user's computer system and tells the user which updates apply to the user's software and hardware. The user can then choose the updates that the user wants to install and how to install them. At the appropriate time, the site (e.g., the server) informs an update agent executing on the user's computer system of the user's selected updates, and instructs the update agent to install the selected updates. The update agent then interacts with the site, and the web services to install the user selected updates. The update agent is typically provided with the software package and is installed and executed on the computer system along with the software.

Unfortunately, delivering software packages and updates to software packages in this manner is limited by the hard-coded entry points included in the software package. Once the hard-coded URL is specified in software, it cannot be easily changed. Thus, the software provider is limited or restricted to providing updates to a version of the software package through the site that is addressed by the hard-coded entry point in the software. Likewise, a specific version of the software is only able to receive updates through the site addressed by the hard-coded entry point in the software.

SUMMARY

A site redirection system and corresponding methods for redirecting a user from a requested site to a target site is provided. When a user navigates to a site on which the redirection system is implemented, the site downloads onto the user's machine client-side redirection logic. The client-side redirection logic collects the machine's configuration information and passes the collected configuration information to the site. On the site, server-side redirection logic uses the received configuration information to determine a target URL based on the configuration information passed by the client-side redirection logic. The server-side redirection logic then passes the target URL to the client-side redirection logic where the final redirection occurs.

This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram illustrating components of a site redirection system, according to some embodiments.

FIGS. 2A and 2B illustrate selected contents of an example redirect URL file, according to some embodiments.

FIG. 3 is diagram illustrating the flow of information between a client machine and a site, according to some embodiments.

FIG. 4 is a flow diagram that illustrates the processing of the client-side redirection logic and server-side redirection logic, according to some embodiments.

DETAILED DESCRIPTION

A site redirection system and corresponding methods for redirecting a user from a requested site (also referred to interchangeably herein as a “web site”) to a target site is provided. The redirection system may be implemented on a site or multiple sites. For example, an organization, such as a software provider, can implement the redirection system on one or more of the organization's sites in order to redirect users navigating to any one of these sites to a target or destination site more appropriate for the user.

In some embodiments, when a user executes a browser program on his or her computer system (also referred to interchangeably herein as a “machine” or “client machine”) and navigates to one of the organization's sites on which the redirection system is implemented, the site downloads onto the user's machine client-side redirection logic. The client-side redirection logic is the starting point for redirection, and executes on the user's machine to collect and store the machine's configuration information, such as, by way of example, information regarding the operating system (OS) that is executing on the machine (e.g., version, service pack, etc.), the processor (CPU) that is executing on the machine, the browser program executing on the machine (e.g., version), localization information (e.g., language) of the machine, etc. The client-side redirection logic passes the collected configuration information to the site. On the site, server-side redirection logic uses the received configuration information parse a redirect URL file. The redirect URL file contains logic that the server-side redirection logic parses or “drills-down” using the configuration information passed by the client-side redirection logic to determine a target uniform resource locator (URL). The server-side redirection logic then passes the target URL to the client-side redirection logic on the user's machine. If the target URL is the URL of the site (i.e., the site navigated to by the user), the server-side redirection logic can inform the client-side redirection logic that the user is at the appropriate site and there is no need to redirect the user. Upon receiving the target URL, the client-side redirection logic redirects the user (e.g., the user's browser program) to the site corresponding to or addressed by the target URL.

Many software providers and other organizations include a client program. such as an update agent, as part of a software product or package as explained above. In some embodiments, where such a user agent is installed and executing on the user's machine, information regarding or related to the update agent can also used in determining the target URL. For example, the client-side redirection logic can collect as part of the machine's configuration information, information regarding or related to the update agent, such as, by way of example, the version of the update agent, the build of the update agent, an opt-in status that indicates whether the user has elected or opted to receive content provided on another of the organization's sites, etc. The client-side redirection logic passes the collected configuration information to the server-side redirection logic on the site. The server-side redirection logic uses the received configuration information parse the redirect URL logic to determine a target URL, which it then passes to the client-side redirection logic where the final redirection occurs.

Regarding the opt-in status, the update agent is typically configured to interact with a single site. For example, the update agent may be configured to interact with a site that belongs to the organization that provided the software product which included the update agent. The organization uses this site to provide content (e.g., information and products, including updates) related to the software product. The opt-in status is an indication that the user has elected to receive content (e.g., notifications and updates of products and services) that is offered through another site belonging to the organization that provided the software product. For example, the user may have navigated to one of the other sites provided by the organization (i.e., a site other than the site that is configured within the update agent) and made an election (i.e., opted-in) to receive content through this site. In response, this site provides the update agent on the user's machine a notification of the user's opt-in decision. The update agent on the user's machine can record the user's election to receive content through another site, and provide the opt-in status information to the client-side redirection logic when requested.

In some embodiments, the server-side redirection logic uses the configuration information in a predetermined sequence, one item of information at a time, to parse the redirect URL logic as far as it can. For example, the configuration information may indicate that the user is running WINDOWS XP, service pack SP2, is using an x86 processor, and is configured for English localization. In this instance, the server-side redirection logic may parse the redirect URL logic first for the WINDOWS XP node. If the WINDOWS XP node is found, the server-side redirection logic can then parse within the WINDOWS XP node for the English localization node. If English localization node is found, the server-side redirection logic can then parse within the English localization node that is within the WINDOWS XP node for the x86 processor node. If x86 processor node is found, the server-side redirection logic can then parse within the x86 processor node that is within the English localization node that is within the WINDOWS XP node for the service pack SP2 node. Each node in the redirect URL logic has a corresponding target URL. The server-side redirection logic parses the redirect URL logic in this manner until a node corresponding to an item of configuration information is not found. The target URL passed to the client-side redirection logic is the target URL that corresponds to the last node found in the redirect URL logic. For example, in the example above, if the x86 processor node is not found in the redirect URL logic, then the target URL corresponding to the English localization node within the WINDOWS XP node is the target URL that is passed to the client-side redirection logic. In the instance where all nodes are found in the redirect URL logic, then the target URL corresponding to the last node is the target URL that is passed to the client-side redirection logic. In the instance where the first node searched for is not found in the redirect URL logic, then a default URL may be passed as the target URL to the client-side redirection logic.

One skilled in the art will appreciate that many variations of the configuration information used to determine a target URL are possible. For example, the client-side redirection logic may not collect all of the configuration information listed above, or may collect additional configuration information than that listed above. Moreover, the server-side redirection logic may not utilize all of the configuration information provided by the client-side redirection logic to determine a target URL. One skilled in the art will also appreciate that many variations of the order in which the items of configuration information are used to parse the redirect URL logic are possible.

FIG. 1 is a block diagram illustrating components of a site redirection system, according to some embodiments. As depicted, a client machine 102 and a web site 104 are each coupled to a network 106. The client machine comprises a browser 108 and an update agent 110. The web site comprises a default page 112 which includes client-side redirection logic 114, a plurality of web pages 116 a-n, server-side redirection logic 118, and a redirect URL file 120. Only one client machine and web site are shown in FIG. 1 for simplicity and one skilled in the art will appreciate that there may be multiple client machines and multiple web sites in the site redirection system. As used herein, the terms “connected,” “coupled,” or any variant thereof, means any connection or coupling, either direct or indirect, between two or more elements; the coupling or connection between the elements can be physical, logical, or a combination thereof.

The client machine is used by a user to navigate to the site and may include any type of computing device, such as a personal digital assistant, a cell phone, a personal computer, and so on. The browser is a software application that is executed and used to locate and navigate to web sites and to display web pages provided by the web sites. The update agent is a client application that facilitates interaction with the web site to for example, receive one or more products/services provided by the web site. For example, if the web site provides software products, updates and revisions to the software products, and information regarding the software products, the update agent may facilitate installation of one or more of the products, updates and revisions, and information onto the client machine.

The web site is a location on the World Wide Web, and is provided by organizations such as software providers, product providers, and so on. The default page is a home page of the web site, and is the first document that users see when users enter the web site. The client-side redirection logic is provided as part of, or with, the default page, and contains the logic to gather or obtain the configuration information on the client machine. In some embodiments, the client-side redirection logic can be implemented using MICROSOFT JSCRIPT, which is a scripting language that can be “plugged in” to an application, such as MICROSOFT's Internet Explorer (IE) browser program. For example, where the browser program on the client machine is IE and the client-side redirection logic is implemented using JSCRIPT, the client-side redirection logic can obtain some or all of the configuration information by parsing a user agent string that is provided by IE. The IE user agent string includes information regarding the OS executing on the client machine, the language configured on the client machine, the IE application running on the machine, etc. Where an update agent is present on the client machine, the client-side redirection logic queries the update agent for configuration information related to, and which can be provided by the update agent, such as the version of the update agent, the build of the update agent, etc. In some embodiments, the client-side redirection logic may be implemented as an ACTIVEX control that can be downloaded onto the client machine as part of the default page and executed by the browser on the client machine. The client-side redirection logic implemented as an ACTIVEX control may obtain the information by requesting the information from one or more other programs, such as the OS, which are running on the client machine. In still other embodiments, the client-side redirection logic may be implemented using other technologies, frameworks or programming languages that are suitable for downloading onto the client machine and sharing information with other programs running on the client machine.

The web pages are the documents that contain the content provided on the web site. The server-side redirection logic contains the logic that determines a target URL by parsing the redirect URL file using the data (i.e., the configuration information) provided by the client-side redirection logic, and which passes the target URL to the client-side redirection logic. In some embodiments, the server-side redirection logic can be implemented as an active server page on the web site. As is generally known, an active server page is a dynamically created web page that is provided to a browser program, for example, running on the client machine, in response to the browser program requesting the active server page. For example, where the browser program on the client machine is IE, the client-side redirection logic is implemented using JSCRIPT, and the server-side redirection logic is implemented as an active server page, the client-side redirection logic can pass the configuration information to the server-side redirection logic via an “xmlpost” operation, which causes the server-side redirection logic to return the target URL to the client-side redirection logic. One skilled in the art will appreciate that other programming languages and techniques may be used to implement the server-side redirection logic.

The redirect URL file contains the logic that is parsed by the server-side redirection logic to determine a target URL. In some embodiments, the redirect URL file can be implemented using extensible markup language (XML). XML allows for the creation of customized tags, thus enabling the definition, transmission, validation, and interpretation of data between applications. The redirect URL file is further described below.

In general terms, the network is a communications link that facilitates the transfer of electronic content between, for example, the attached client machine and web site. In some embodiments, the network includes the Internet. It will be appreciated that the network may be comprised of one or more other types of networks, such as a local area network, a wide area network, a point-to-point dial-up connection, and the like.

The computing device on which the site redirection system is implemented may include a central processing unit, memory, input devices (e.g., keyboard and pointing devices), output devices (e.g., display devices), and storage devices (e.g., disk drives). The memory and storage devices are computer-readable media that may contain instructions that implement the site redirection system. In addition, the data structures and message structures may be stored or transmitted via a data transmission medium, such as a signal on a communications link. Various communication links may be used, such as the Internet, a local area network, a wide area network, a point-to-point dial-up connection, a cell phone network, and so on.

Embodiments of the site redirection system may be implemented in various operating environments that include personal computers, server computers, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, programmable consumer electronics, digital cameras, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and so on. The computer systems may be cell phones, personal digital assistants, smart phones, personal computers, programmable consumer electronics, digital cameras, and so on.

The site redirection system may be described in the general context of computer-executable instructions, such as program modules, executed by one or more computers or other devices. Generally, program modules include routines, programs, objects, components, data structures, and so on that perform particular tasks or implement particular abstract data types. Typically, the functionality of the program modules may be combined or distributed as desired in various embodiments.

FIGS. 2A and 2B illustrate selected contents of an example redirect URL file, according to some embodiments. The redirect URL file comprises a URL constants section 202 and a URL parsing logic section 204. The URL constants section contains the target URLs specified as attributes/value pairs for various site nodes. For example, and as depicted in FIG. 2, element 206 specifies that the targetURL is “http://v4.windowsupdate.microsoft.com” for the V4url node (site=“4”). Similarly, element 208 specifies that the targetURL is “http://v5.windowsupdate.microsoft.com” for the V5url node (site=“5”), element 210 specifies that the targetURL is “http://update.microsoft.com/windowsupdate” for the V6Live node (site=“6Live”), and element 212 specifies that the targetURL is “http://update.microsoft.com/microsoftupdate” for the V6MULive node (site=“6MULive”).

The URL parsing logic section contains nested node values that are parsed to ultimately determine a target URL. As illustrated by the contents of the parsing logic section, the nodes are nested in the following sequence: “OS” (OS value); “Processor” (the processor on the user's client machine); “Lang” (the language configured on the user's client machine); “SP” (the service pack value of the installed OS—e.g. Windows XP Service Pack 2); “CurrentSite” (the version of the current site that the user has navigated to); “control” (the version of the update agent running on the user's client machine); and “MUOptIn” (a Boolean flag that indicates whether the user has opted-in to receive content from the MU site). The SP node and the control node each specify a range of values within which to check for a match. For example, assuming the control version is “2367,” the minVersion is specified as “2300,” and the maxVersion is specified as “2400,” this check would result as true, since the actual version (i.e., 2367) falls within the specified range (i.e., 2300 to 2400). Specifying a range of values also allows for open ended checks—e.g. assuming 2300 is the specified minVersion and no maxVersion is specified, then any control version equal to or greater than 2300 would result in a match.

By way of example, and as depicted in FIG. 2, element 214 specifies that the TargetSite is “V6Live” for the “5.1” OS node. Within this OS node, element 216 specifies that the TargetSite is “V6Live” for the “x86” processor node, and element 218 specifies that the TargetSite is “V4url” for the “ia64,wow64” processor node. Within the “x86” processor node, element 220 specifies that the TargetSite is “V6Live” for the specified Lang (i.e., language) node. A “blank” or empty value signifies a “wildcard,” and a blank value for an attribute indicates that the attribute matches all values. Therefore, all languages correspond to the TargetSite “V6Live.” Within the Lang node, element 222 specifies that the TargetSite is “V6Live” for the specified range of SP nodes. Because the range of values are empty (minMajor=“ ” and maxMajor=“ ”), all SP values correspond to the TargetSite “V6Live.” Within the SP node, element 224 specifies that the TargetSite is “V6Live” for the specified CurrentSite node. Because the value for the CurrentSite is empty, all CurentSite values correspond to the TargetSite “V6Live.” Within the CurrentSite node, element 226 specifies that the TargetSite is “V6Live” for the “5.8.0” control node having a version that is at least “2284” (within a range minVersion=“2284” and maxVersion=“ ”). Within the “5.8.0” control node, element 228 specifies that the TargetSite is “ServiceURL” if the MUOptIn node is set to “true” (i.e., the user has opted-in to the MU site).

In some embodiments, the items of configuration information are used in a predetermined sequence to parse the nodes in the redirect URL file. Moreover, when an item of configuration information matches a node in the redirect URL file, the next item of configuration information in the sequence is compared to the nodes within the matching node to determine if there is a match between the next item of configuration information and any of the nodes. Stated differently, the next item of configuration information is checked against the nodes in a nesting level that is within the nesting level of the node that successfully matched the preceding item of configuration information in the sequence. This matching process is repeated until the server-side redirection logic fails to find a matching node for an item of configuration information (i.e., the first item of configuration information that fails to match a node in the redirect URL file). When an item of configuration information fails to match a node, a target URL corresponding to the last matching node (the node that matched the item of configuration information that preceded in sequence the item of configuration information for which a match was not found) is used as the target URL. If all items of information are successfully matched by nodes in the redirect URL file, then a target URL corresponding to the last node that is matched is used as the target URL.

By way of an example of parsing the nodes in the example redirect URL file to determine a target URL , the configuration information may indicate the following: OS=5.1; language=en; processor=x86; SP=1; CurrentSite=v4; and control=5.7.xxxx. To determine a target URL using this configuration information, the server-side redirection logic may parse the redirect URL file above first for the OS node. In this case, the OS is 5.1, therefore, the server-side redirection logic falls into the OS node that matches 5.1 (element 214). Next, the server-side redirection logic drills down into the matching OS node looking to match the processor node. In this case, there is a match for processor=x86, therefore, the server-side redirection logic falls into the Processor node that matches x86 (element 216). Next, the server-side redirection logic drills down into the matching processor node looking to match the Lang node. Because the Lang node is present with a blank value, the Lang node matches any value, including en. Therefore, there is a match for language=en and the server-side redirection logic falls into the Lang node that matches en (element 220). Next, the server-side redirection logic drills down into the matching Lang node looking to match the SP node. The SP node specifies a range of values, and the server-side redirection logic looks for a range that includes a value of 1 for the SP. There is one SP node specified within the matching Lang node, and the specified SP node has a blank value for the range limits (i.e., minMajor=“ ” and maxMajor=“ ”). Because the SP node has a blank value for the range limits, it is a mach for SP=1, and the server-side redirection logic falls into the SP node that matches 1 (element 222). Next, the server-side redirection logic drills down into the matching SP node looking to match the CurrentSite node. Because the CurrentSite node is present with a blank value, the CurrentSite node matches any value, including v4. Therefore, there is a match for CurrentSite=v4 and the server-side redirection logic falls into the CurrentSite node that matches v4 (element 224). Next, the server-side redirection logic drills down into the matching CurrentSite node looking to match the control node. In this example, the server-side redirection logic is not able to find a control node that matches control=5.7.xxxx. Failing to find a match, the server-side redirection logic falls back up to the previous matching CurrentSite node (element 224) and uses that node's TargetSite URL (i.e., V6Live). The server-side redirection logic determines from the URL constants section that node V6Live corresponds to TargetURL http://update.microsoft.com/windowsupdate.

One skilled in the art will appreciate that one or more of the aforementioned nodes may not be specified within any particular nesting of the nodes in the redirect URL file, for example, as illustrated by the nesting of the nodes within the “ia64,wow64” processor node in element 218. One skilled in the art will also appreciate that other nodes corresponding to additional configuration information may be specified in the redirect URL file. One skilled in the art will further appreciate that a different sequential order for using the items of configuration information and/or a different nesting order for the nodes specified in the redirect URL file may be used. For example, the server-side redirection logic may first try to match the processor value instead of the OS value. As another example, the Processor node may be nested within the Lang node.

FIG. 3 is diagram illustrating the flow of information between a client machine and a site, according to some embodiments. By way of example, a user may execute a browser program on the client machine and request to access (e.g., navigate to) the site (stage 1). In response, the site downloads onto the client machine the client-side redirection logic as part of the site's default page (stage 2). In some instances, the site's default page and the client-side redirection logic may already be on the client machine, for example, as a result of the user previously accessing the site. The client-side redirection logic executes on the client machine and obtains the configuration information (i.e., information regarding the client machine's configuration) (stage 3). The client-side redirection logic passes the obtained configuration information to the site (stage 4). Server-side redirection logic on the site uses the configuration information to determine a target URL (stage 5). The server-side redirection logic provides the client-side redirection logic the target URL (stage 6). The client-side redirection logic performs the final redirection based on the target URL (stage 7). For example, if the current site is not the site corresponding to the target URL, the client-side redirection logic redirects the user to the site corresponding to the target URL. Otherwise, if the current site is the site that corresponds to the target URL, the client-side redirection logic does not redirect the user (the user is already at the site corresponding to the target URL).

FIG. 4 is a flow diagram that illustrates the processing of the client-side redirection logic and server-side redirection logic, according to some embodiments. By way of example, a user may have used an IE browser executing on a client machine to navigate to a site, and the site may have downloaded the client-side redirection logic implemented on the client machine. In block 402, the client-side redirection logic parses a user agent string provided by the IE browser to obtain configuration information (i.e., information regarding the client machine's configuration). In block 404, the client-side redirection logic obtains additional configuration information from the update agent on the client machine. In block 406, the client-side redirection logic passes the machine configuration information to the server-side redirection logic. In block 408, the server-side redirection logic uses the machine configuration information to parse the redirect URL file to determine a target URL. In block 410, the server-side redirection logic passes the target URL to the client-side redirection logic. In block 412, the client-side redirection logic redirects the user to a site corresponding to the target URL.

One skilled in the art will appreciate that, for this and other processes and methods disclosed herein, the functions performed in the processes and methods may be implemented in differing order. Furthermore, the outlined steps are only exemplary, and some of the steps may be optional, combined with fewer steps, or expanded into additional steps.

Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims. 

1. A method in a computer system for redirecting a client to a target site, the method comprising: at a web site, receiving from a client a request to access the web site; obtaining from the client configuration information; based on the client configuration information, determining a target URL; and providing the client the target URL, such that the client redirects to a destination corresponding to the target URL.
 2. The method of claim 1, wherein the web site provides the client a successful response upon determining that the target URL addresses the web site.
 3. The method of claim 1, wherein the client configuration information is obtained by executing a client-side redirection logic on the client.
 4. The method of claim 3, wherein the client-side redirection logic is provided to the client as part of a default page of the web site.
 5. The method of claim 1, wherein the client configuration information comprises an indication of an operating system executing on the client.
 6. The method of claim 1, wherein the client configuration information comprises an indication of the type of processor on the client.
 7. The method of claim 1, wherein the client configuration information comprises localization information.
 8. The method of claim 1, wherein the client configuration information comprises an indication of the version of an update agent executing on the client.
 9. The method of claim 1, wherein the client configuration information comprises an indication of a version of the web site.
 10. The method of claim 1, wherein the client configuration information comprises an indication of a version of an update agent executing on the client, wherein the update agent is configured to provide updates provided by a first service.
 11. The method of claim 10, wherein the client configuration information comprises an indication of whether the client has opted-in to receive updates provided by a second service.
 12. The method of claim 1, wherein the client configuration information is checked in a predetermined sequence until the target URL is determined. 13-17. (canceled)
 18. A computer-readable medium whose contents cause a web site to redirect a client, by performing operations comprising: receiving a request from a client to access the web site; in response to receiving the request, sending to the client client-side redirection logic, wherein the client-side redirection logic is configured to obtain configuration information and send the web site the obtained configuration information; receiving client configuration information obtained by the client-side redirection logic; based on the received client configuration information, determining a target URL; and sending the client the target URL, such that the client redirects to a destination site corresponding to the target URL.
 19. The computer-readable medium of claim 19, wherein the client-side redirection logic is sent to the client with a default page of the web site.
 20. The computer-readable medium of claim 19, wherein the target URL is determined by a redirect page on the web site.
 21. A redirection system configured to provide a redirection address in response to receiving a request from a hand-held computing device, the redirection system comprising: a redirection data structure mapping each of a plurality of system configurations to at least one redirection address; a redirection address identification component configured to access the redirection data structure to determine a redirection address mapped to a system configuration of the hand-held computing device in response to receiving from the hand-held computing device an indication of a system configuration corresponding to the hand-held computing device; and a transmission component configured to transmit the determined redirection address to the hand-held computing device.
 22. A computer-readable storage device storing instructions that, when executed by a client computing system, cause the client computing system to perform operations comprising: in response to sending to a remote computing system a request to access a first location specified by a first URL, receiving, from the remote computing system, client-side redirection logic configured to collect system configuration information corresponding to the configuration of the client computing system, obtaining, from the received client-side redirection logic, system configuration information collected by the client-side redirection logic, sending, to the remote computing system, the obtained system configuration information, wherein the remote computing system is configured to identify a redirection URL in response to receiving system configuration information, receiving, from the remote computing system, a redirection URL associated with the obtained system configuration information, and directing the client computing system to a second location specified by the received redirection URL to effect the redirecting of the client computing system based on the configuration of the client computing system.
 23. The computer-readable storage device of claim 22 wherein the client computing system is a hand-held device.
 24. The computer-readable storage device of claim 22 wherein the client-side redirection logic is a plug-in to an application executing on the client computing system.
 25. The computer-readable storage device of claim 22 wherein the client-side redirection logic is obtained as a control within a web page displayed by a browser executing on the client computing system.
 26. The computer-readable storage device of claim 22, wherein the obtained system configuration information specifies an operating system, a processor, and localization information. 